For modern computing devices, including traditional personal computers, as well as personal digital assistants, cellular telephones, and the like, network communicational abilities have become ubiquitous. As a result, an increasing amount of information utilized by such computing devices is obtained from storage devices that are physically separate from such computing devices, and with which communication is established through one or more networks. Similarly, an increasing amount of information created by such computing devices is often stored, not on a storage medium co-located with the computing device itself, but rather on storage media that are physically separate from such computing devices and communicationally connected with such computing devices through network communications.
Information stored on, and utilized from, networked storage media, such as the storage media of one or more server computing devices, can provide benefits over locally stored information. For example, information available from networked storage media can be accessed by multiple different computing devices, often simultaneously, thereby enabling greater sharing and collaboration efforts. Similarly, information stored on the storage media over one or more server computing devices can receive the practical benefits of the support provided to those server computing devices including, for example, data redundancy, data backup, uninterruptible power supply, and other like benefits. Unfortunately, however, information stored on, and utilized from, networked storage media can likewise have drawbacks as compared with locally stored information. Most notably, access to a network through which the networked storage media can be communicated with may not always be available. Additionally, the provision of data across a network can be subject to various delays that are typically not present when the data is stored on a storage medium that is local to the computing device. Such delays can include network throughput, network latency, and the inability of the networked storage media to supply data in an efficient manner to a large number of requesting clients simultaneously.
Traditionally, the developers of software application programs must decide in advance whether the computer-executable instructions that comprise their software application programs will attempt to access data that is stored locally on the computing device on which such computer-executable instructions are executing, or whether they will attempt to access data that is stored remotely, such as on networked storage media. Different function calls and access methodologies are typically utilized by such developers depending on where the data that their application programs are attempting to access is stored.